import { toStringTypeCheck } from './toStringTypeCheck';

/**
 * 嵌套 setTimeout 后運行 func 并返回其值
 * @param {number|number[]} nth --嵌套 setTimeout 的層數<number> / [...delayTime<ms>]
 * @param {function} func -- 待嵌套結束后 返回 運行的 函數值
 */
function settimeNth(nth, func) {
  if (toStringTypeCheck(nth, 'number') && nth >= 0) {
    return setTimeout(() => {
      // settimeNth(--nth, func);
      //   console.log(nth);
      return func();
    }, nth);
  } else if (toStringTypeCheck(nth, 'array') && nth.length > 0) {
    return setTimeout(() => {
      nth.shift();
      settimeNth(nth, func);
      //   console.log(nth);
    }, nth[0]);
  } else {
    return func();
  }
}

export { settimeNth };
